Testing software, such as validating or verifying software, is a common activity among information technology (IT) organizations. For example, whether the software is a desktop application for execution at one or more client computer systems or a web application for execution at one or more server computer systems, it is often important to verify the quality of the software. While some types of errors in software cause only annoyance or inconvenience to users, other types of errors have the potential to cause other problems, such as data and financial loss.
Symbolic execution may be used to test and verify software by generating test inputs for the software. However, symbolic execution may encounter a state explosion problem for some software, even relatively simple software. The state explosion problem may result in the symbolic execution being time consuming and/or resource intensive to generate corresponding test inputs. In some instances, the amount of processing required from a state explosion may be prohibitive in generating the test inputs.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.